package at.ac.tuwien.prog.flash;

import java.io.IOException;

/**
 * wrapper for the flash memory with I/O-operations.
 * 
 * Der Flash-Speicher (simuliert durch eine Datei) hat eine fixe Groesse, die von Ihnen waehlbar ist.
 * Dieser Speicher kann nur in einzeln adressierbaren Bloecken
 * von je 512 Byte ueber einen Puffer gelesen und geschrieben werden.
 * 
 * @author christoph.pickl@student.tuwien.ac.at
 */
public interface IFlashManager {

	/**
	 * reads a complete block from flash.
	 * 
	 * @param blockNumber which should be read, from 0 to defined maximum block number
	 * @return 512 byte array representing a flash block
	 * @throws IOException if reading file failed
	 */
	byte[] readBlock(int blockNumber) throws IOException;
	
	/**
	 * writes a block into specified block number.
	 * 
	 * @param blockNumber which should be written to, from 0 to defined maximum block number
	 * @param blockData 512 byte big array to write
	 */
	void writeBlock(int blockNumber, byte[] blockData);
}
